<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script type="text/javascript">
			// 阿里的题
			var a = 10;
			if (function b(){}){
				a += typeof(b);
				
			}
			
			console.log(a); //10object 错了 10undefined
			// null undefined false "" 0 NAN
			/* 
			 * 因为(function b(){}) 被括号包起来就变成表达式了，
			 * b有没有都无所谓了，所以b没有被定义，会报错
			 * 但是如果是typeof(b)，不会报错，
			 * 会返回undefined，typeof是唯一一个返回不报错
			 */
			
			// 累加器 初始值是0； 形成闭包， 每执行一次加一
			
			// 缓存器，一个班级(写成函数)，学生名字保存在一个数组里(函数里)，两个方法写在函数中的一个对象中，
			// 第一个方法是加入班级，第二个方法是离开班级，每次加入或离开，
			// 每次执行这两个方法，传入相应的参数，需要传入学生的名字，打印新的学生名单
			// console.log('<\/script>')
			
		</script>
		
		<div date-name="沙溢" class="" ONCLICK=""></div>

		<!-- js的解释器在处理没有;结尾的时候，解释器先去判断后面的代码能不能跟前面的代码合并  -->
		<!-- 如果某一行代码不是分号结尾，下一行以括号或者运算符开头，下面和上面会拼在一起 -->
		<!-- 好处：写条件判断时，有多个条件一起判断，写在一行阅读起来不是很方便 -->
		<!-- 坏处：如果下一行是括号开头，js解释器会把上一行代码当成函数处理合并 -->
		<!-- 解决办法，很多程序员会在开头写分号;,这样就算上面的程序没写分号，也可以解决这个问题 -->
		
		
	</body>
</html>
